<template>
	<view>
		<view class="goods-list">
			<view
				@click="goToGoodsDetail(goods.goods_id)"
				v-for="(goods,index) in goodsList" :key="goods.goods_id">
				<my-goods
					:isShowNum="false" :isShowRadio="false" :goods="goods"></my-goods>
			</view>
		</view>
	</view>
</template>

<script>
	export default {
		methods: {
			goToGoodsDetail(goodsId){		// 处理跳转到商品详情页面
				uni.navigateTo({
					url: `/subpkg/goods_detail/goods_detail?goods_id=${goodsId}`
				})
			},
			async getGoodsList(fn){			// 获取商品列表数据
				this.isLoading = true
				const { data: res } = await uni.$http.get('/api/public/v1/goods/search',this.queryObj)
				// 校验是否请求成功
				if(res.meta.status !== 200){
					return uni.$showMsg('请求数据失败')
				}
				this.goodsList = [...this.goodsList,...res.message.goods]
				this.total = res.message.total
				this.isLoading = false
				// 校验是否处于下拉刷新下的数据请求
				fn && fn()
			}
		},
		data() {
			return {
				total: 0,				// 存储商品总条数
				goodsList: [],	// 存储商品列表数据数组
				queryObj: {			// 请求参数对象
					query: '',					// 查询关键字
					cid: '',						// 商品分类id
					pagenum: 1,					// 请求数据页数
					pagesize: 10				// 每页请求条数
				}
			}
		},
		onPullDownRefresh(){		// 下拉刷新生命周期函数
			// 还原数据
			this.queryObj.pagenum = 1
			this.total = 0
			this.goodsList = []
			this.getGoodsList(()=>{
				uni.stopPullDownRefresh()
			})
		},
		onReachBottom(){				// 上拉触底生命周期函数
			// 为了阻止额外发送的请求
			if(this.isLoading){
				return
			}
			// 校验是否处于最后一页数据
			if(this.queryObj.pagenum >= Math.ceil(this.total / this.queryObj.pagesize)){
				return uni.$showMsg('已经是最后一页')
			}
			this.queryObj.pagenum += 1
			this.getGoodsList()
		},
		onLoad(options){
			this.queryObj.query = options.query || ''
			this.queryObj.cid = options.cid || ''
			this.getGoodsList()
		}
	}
</script>

<style lang="scss">
</style>
